Access control in data processing system

ABSTRACT

A policy data structure defines predetermined authorizations, each relating to authorization of at least one user to access at least one resource as well as to dynamic access requests. Each dynamic access request indicates a condition to be satisfied by a respective set of attributes associated with a user request to access a resource and for the request to be granted in absence of an authorization determinative of the request. If the structure does not define an authorization for a request to access a resource, it is determined whether the structure defines a dynamic access requirement determinative for the request, and if so, whether to grant the request in accordance with the respective set of attributes associated with the request. For at least one request, after determining whether to grant the request, a dynamic authorization relating to authorization to access the resource within the request is added to the structure.

RELATED APPLICATIONS

The present patent application claim is a continuation of patentapplication Ser. No. 13/460,842, filed on May 1, 2012, which is acontinuation of patent application Ser. No. 13/077,881, filed on Mar.31, 2011, which issued as U.S. Pat. No. 8,566,906 on Oct. 22, 2013, andwhich claimed priority under 35 USC 119 to European patent application10158633.7, filed on Mar. 31, 2010.

BACKGROUND

Access control is fundamental for enforcing security and privacyrequirements in data processing systems, protecting system resourcessuch as files, applications, databases, and so on, against unauthorizedaccess by internal or external system users. In electronic commerce, forexample, and indeed in the Internet in general, one of the mostimportant considerations is ensuring that only authorized users canaccess valuable resources.

SUMMARY

A method of an embodiment of the invention includes determining, by aprocessor, whether a policy data structure defines an authorization fora request to access a resource. The policy data structure definingpredetermined authorizations. Each predetermined authorization relatesto authorization of at least one user to access at least one resource.Each predetermined authorization further relates to dynamic accessrequests. Each dynamic access request indicates a condition to besatisfied by a respective set of attributes associated with a userrequest to access a resource and for the request to be granted inabsence of an authorization determinative of the request. The methodincludes, in response to determining that the policy data structuredefines an authorization for the request to access the resource,applying the authorization, by the processor, to determine whether togrant the request.

The method includes, in response to determining that the policy datastructure does not define an authorization for the request to access theresource, determining, by the processor, whether the policy datastructure defines a dynamic access requirement determinative for therequest. The method includes, in response to determining that the policydata structure defines a dynamic access requirement determinative forthe request, determining, by the processor, whether to grant the requestin accordance with the respective set of attributes associated with therequest. The method includes, for at least one user request, afterdetermining whether to grant the request, adding a dynamic authorizationrelating to authorization to access the resource within the request, bythe processor, to the policy data structure.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWINGS

The drawings referenced herein form a part of the specification.Features shown in the drawing are meant as illustrative of only someembodiments of the invention, and not of all embodiments of theinvention, unless otherwise explicitly indicated, and implications tothe contrary are otherwise not to be made.

FIG. 1 is a diagram of a schematic representation of a data processingsystem implementing an access control method, according to an embodimentof the invention.

FIG. 2 is a flowchart of a method showing basic operation of the accesscontrol apparatus in the FIG. 1 system in response to a user accessrequest, according to an embodiment of the invention.

FIG. 3 is a flowchart of a method for creating dynamic authorizations inan access control apparatus of a system, according to an embodiment ofthe invention.

FIG. 4 is a flowchart of a method for identifying determinativeauthorizations in a policy data structure, according to an embodiment ofthe invention.

DETAILED DESCRIPTION

In the following detailed description of exemplary embodiments of theinvention, reference is made to the accompanying drawings that form apart hereof, and in which is shown by way of illustration specificexemplary embodiments in which the invention may be practiced. Theseembodiments are described in sufficient detail to enable those skilledin the art to practice the invention. Other embodiments may be utilized,and logical, mechanical, and other changes may be made without departingfrom the spirit or scope of the present invention. The followingdetailed description is, therefore, not to be taken in a limiting sense,and the scope of the embodiment of the invention is defined only by theappended claims.

As noted in the background section, access control is fundamental forenforcing security and privacy requirements in data processing systems.In simple terms, access control involves defining an access controlpolicy which indicates the extent to which users are authorized toaccess controlled resources, and then applying this policy to decidewhether to grant or deny user requests to access resources. The accesscontrol policy is defined by some form of data structure, which may havea number of component data structures, stored in system memory.Individual access rights are represented in the policy data structure bysome form of “authorization”, where a given authorization relates toauthorization of at least one user to access at least one resource andmay in general indicate that the user is, or on the contrary is not,authorized to access the resource(s) in question.

In general, the user may be any requesting entity such as a person orgroup of persons, or an application, device, sub-system, and so on,having an identity in the data processing system. A resource may be anysystem component, item or functionality, such as a service, device,object, URL (universal resource locator), data entity, and so on, towhich access needs to be controlled. Also, authorizations might bedefined explicitly or implicitly in a policy data structure, and may besubject to particular constraints, such as in relation to the nature ofpermitted access (e.g., the allowed action) or the time of day at whichaccess can occur. Any such constraints may themselves be definedexplicitly or implicitly in the policy data structure.

In general, the particular way in which policy is represented in policydata structures, and how these structures are interpreted by accesscontrol decision logic, can vary widely in access control systems.However, a predefined policy data structure based on authorizations thatdefine user access privileges lies at the heart of all traditionalaccess control systems. Such policy data structures can be considered“static” in the sense that they define predetermined authorizations thatare input in advance by a system administrator, this structure thenbeing applied to all user requests in operation until the policy issubsequently updated by administrator intervention. These static policydata structures can be designed for highly efficient operation.Traditional ACL (access control list)-based access control systemsprovide a particular example here. In these systems, authorizations aredefined (inter alia) by ACLs. These ACLs are set statically by systemadministrators and are very efficient to evaluate.

It has also been proposed to use basic caching techniques to furtherenhance efficiency of traditional access control systems. In particular,the result of an authorization request can be stored in a cache memory.This result can then be re-used if the same request is received again,avoiding re-evaluation of the policy data structure. The cached resultsare flushed in the event of a policy change.

While the foregoing systems involve comparing essentially staticproperties indicated in a user request (e.g., user identity) againstpredetermined authorizations defined in the policy, modern applicationsare increasingly demanding access control based upon dynamic attributesretrieved in the very moment of the access control decision. In general,such attributes can be any items of useful information associated insome way with the request, and may be obtained from a variety ofattribute sources as well as the requesting user. These attributes mayrelate, for instance, to the user, the resource, the requested action orthe environment in which the request is made (e.g., current time, userlocation, etc). Access control based on such dynamically retrievedattributes can be realized by evaluating predefined requirementsindicating conditions which must be satisfied by attributes associatedwith a user request for the request to be granted. These conditions canbe defined, for instance, by Boolean rules. Modern identity managementsystems similarly base their access control decisions on dynamicallyobtained attributes encoded in certified claims or attributecredentials.

Access control based upon dynamic attributes provides a vast spectrum ofnew functionality. This method is powerful, yet costly. For example, itcan take several Round Trip Times (RTTs) to retrieve the set of dynamicattributes that need to be evaluated to reach a decision on a request.In addition, the engines for dynamic rule evaluation are significantlyslower than the static policy evaluation process in traditional systems.This loss of efficiency is a drawback of the use of dynamic attributesin access control.

At least some embodiments of the invention overcome these disadvantages.In one embodiment, access to resources is controlled in accordance withan access control policy data structure. The policy data structuredefines predetermined authorizations and dynamic access requirements.Each of the former relates to authorization of at least one user toaccess at least one resource, whereas each of the latter relates to acondition to be satisfied by a respective set of attributes associatedwith a user request to access a resource for the request to be grantedin absence of a said authorization determinative for that request.

If there is not a defined authorization for a request, then a dynamicaccess requirement may instead have been defined for the request. Assuch, deciding whether to grant the request is controlled in this caseaccordance with a respective set of attributes associated with therequest. For at least some user requests, upon deciding whether to grantthe request by applying a dynamic access requirement, a dynamicauthorization relating to authorization of the user to access therequested resource is added to the data structure in question.

Access control methods can thus be based around a policy data structuredefining both predetermined authorizations and dynamic accessrequirements. The latter permit evaluation of requests based ondynamically obtained attributes. If the policy data structure contains apredefined authorization that is determinative for a request (i.e., isdecisive as to whether the request should be granted or refused), thenthis will be applied to decide whether to grant the request. Hence, thesystem checks first whether the policy data structure defines anauthorization that is determinative for a request, and, if so, appliesit.

However, in the absence of a determinative authorization, the systemchecks whether the policy data structure defines a dynamic accessrequirement that can be used to obtain a decision for the request. Ifthe policy does contain a determinative dynamic access requirement, agrant/refusal decision is made in accordance with the appropriate set ofattributes associated with the request—i.e., according to whether thecondition indicated by the dynamic access requirement is satisfied bythis attribute set. For at least some requests decided on the basis of adynamic access requirement, an authorization is then added to the policydata structure relating to authorization of the requesting user toaccess the requested resource. Such an authorization is a “dynamicauthorization,” since it is defined dynamically in contrast to thepredetermined, static authorizations defined in advance by the systemadministrator.

The effect, however, is basically the same. Thus, if the same request isreceived subsequently, an authorization that is determinative for therequest—the dynamic authorization—is now present in the policy datastructure. This will then be used to decide the request, avoidingre-evaluation of the dynamic access requirement. This may avoid not onlythe time penalty associated with reacquiring any necessary attributes,but also the overhead associated with the slower condition-evaluationprocess. By dynamically converting the results of attribute-baseddecisions into authorizations in this way, embodiments of the inventionmay promote the more efficient evaluation process offered by staticpolicy data structures, and thus reducing use of the far more costlydynamic attribute evaluation. This may offer significant improvements inefficiency of the request evaluation process, providing access controlsystems with improved overall performance.

The access control policy data structure may in general have one or morecomponent data structures. Authorizations can be defined, in general, inany convenient manner so as to indicate that at least one user is (or onthe contrary is not) authorized to access at least one resource to atleast some extent. Authorizations may be defined both explicitly andimplicitly in the policy data structure and may be subject toconstraints as discussed above.

In general, dynamic access requirements may be defined in the policy inany convenient manner so as to express what needs to be evaluated todecide on a request for which there is no determinative authorization inthe policy. A dynamic access requirement may indicate a condition to besatisfied for the request to be granted in either explicit or implicitterms. For instance, a dynamic access requirement explicitly defining acondition to be satisfied for refusing a request also implicitly definesa condition for granting the request. The condition associated with adynamic access requirement may in general include one or more componentconditions expressed in any convenient manner, such as via Boolean logicexpressions.

The set of attributes to be evaluated for a given dynamic accessrequirement may in general include one or more attributes. Theseattributes may be associated in a variety of ways with a user request,relating for example to the user, resource, action or environment asmentioned above. Attributes relating to the user may concern any item ofinformation attributed to a user, relating, for example, to someproperty, quality, characteristic, feature or other item belonging to,describing or otherwise associated with the user. In a typical scenario,user attributes are represented by (e.g., cryptographically encoded in)some form of credential, issued to the user by a trusted entity, whichcan be presented by the user to prove possession of particularattributes. The set of attributes associated with a request may includeattributes provided by the user and also attributes obtainable fromother sources such as certification authorities, identity providers(IDPs), credential issuers, time servers, and so on. Where the requiredattributes are not supplied with the initial user access request, theaccess control process may include the step of obtaining the requiredattribute(s) from the appropriate attribute provider(s).

The process for determining whether the policy data structure containsan authorization (or dynamic access requirement) that is determinativefor a request can depend upon the manner in which the policy datastructure is constructed and how the resulting structure is interpretedby the analysis logic. As a simple illustration, if an authorization inthe policy data structure is designed to express all access rights for agiven user, then absence of an access right indicates authorization isdenied. Such an authorization would then be determinative for anyrequest from that user. However, if the access rights in the sameauthorization are not deemed exhaustive, then the authorization will bedeemed determinative only for user requests concerning access rightsexpressed in the authorization. Some systems may be designed to providean applicable dynamic access requirement in all cases where there is noauthorization in the policy that is determinative for a user request. Inother cases, user requests might simply be refused if no determinativeauthorization or dynamic access requirement is identified.

When a dynamic authorization is added to the policy data structure, thisrelates to authorization of the user to access the requested resourcebut may also express additional information, and in particular anylimitation or constraints to which the authorization is subject asderived from the condition evaluated in the dynamic access requirement.Thus, a dynamic authorization may indicate that the user is (or is not)authorized to at least some extent, as determined by application of thedynamic access requirement. Upon adding a dynamic authorization, thepolicy data structure is supplemented by defining this additional userauthorization. Such dynamic authorizations are added for at least someuser requests that are decided by application of dynamic accessrequirements. Dynamic authorizations could, for example, be created onlyfor particular types of request (e.g., concerning particular categoriesof resources or users), or where the dynamic access requirement involvesevaluation of particular attributes or types of attribute. For instance,creation of a dynamic authorization may be dependent on attributelifetime.

In some systems, dynamic authorizations might be created only when auser request is granted—that is, not if a request is refused. In othersystems, dynamic authorizations could be created if deemed appropriateeven when a request is refused. For example, if evaluation of thedynamic access requirement indicates that access might be granted insome circumstances, such as at certain times of day, then a dynamicauthorization might be created even though the current request isrefused, such as due to the time of making the request. As anotherexample, a dynamic authorization could express a negative authorizationindicating that the user is not authorized to access the resource inaccordance with evaluation of the dynamic access requirement. In someembodiments, a dynamic authorization is added to the policy datastructure for at least some user requests at least if it is decided togrant the request by evaluation of a dynamic access requirement.

Where attributes used in evaluating dynamic access requirements have alimited lifetime, then this can be identified in preferred embodimentsand accounted for in the process of creating dynamic authorizations.User attributes certified by some form of credential, in particular, aretypically subject to a temporal validity limitation corresponding to thevalidity period of the credential. Credential issuing authoritiestypically certify attributes as valid for a limited period and indicatethe appropriate expiration time in the credential itself. In someembodiments of the invention, upon applying a dynamic access requirementto a request, any temporal validity limitation indicated for the set ofattributes evaluated for that requirement is identified. For example,the earliest expiration time associated with attributes in the set maybe identified.

This time limit may be used in deciding whether to create a dynamicauthorization as discussed further below. In addition, whileapplications involving only attributes with no validity limits might beenvisaged, some embodiments can allow dynamic authorizations to becreated and managed even where these authorizations are based onattributes with limited lifetimes. In particular, an expiration time fora dynamic authorization can be defined in the policy data structure andthe authorization only applied to a subsequent user request up to thatexpiration time. This could be implemented in various ways, such as bymonitoring expiration times and removing dynamic authorizations whenexpiration times are reached.

The block diagram of FIG. 1 is a simplified schematic of an exemplarydata processing system 1 showing the main elements involved in theaccess control process to be described, according to an embodiment ofthe invention. In this system, a policy enforcement point (PEP) 2, suchas a server such as a file server or web server, controls access toresources 3, such as files or web pages, by users which are representedsimply in the figure by user computers 4. In response to a user requestfor access to a resource 3, the PEP 2 communicates with access controlapparatus, indicated generally at 5, via a request handler 6 of thesystem.

Access control apparatus 5 includes an authorization server 7 that makesaccess control decisions in accordance with an access control policydata structure stored in a policy database 8. Authorization server 7includes control logic in the form of controller 9 and local memory 10.Controller 9 incorporates the decision engines for applying policy toaccess requests to decide whether requests should be granted or refused.In addition to this access decision process, controller 9 includesfunctionality for creation and management of dynamic authorizations asdescribed in detail below. In general, the control logic of controller 9may be implemented in hardware or software or a combination thereof. Inthe present example, the logic is implemented by software running onauthorization server 7, and suitable software will be apparent to thoseskilled in the art from the description of operation herein.

In this example, the access control policy is defined and interpreted inaccess control apparatus 5 with features relating to dynamic accessrequirements as described in detail below. The access control policy indatabase 8 is represented by a composite data structure which usesaccess control lists (ACLs) and protected object policies (POPs)associated with “protected objects” (“objects” for short) that arelogical representations of resources. An object data structure isdefined in which objects are associated with individual “access controlnodes” in a hierarchical arrangement of access control nodes. Accesscontrol nodes are defined by a parameter tuple (ACL, POP, rule) thatindicates access rights for a resource. In particular, authorizationsare defined by attaching an ACL and/or POP to an access control nodecorresponding to an object in the hierarchical structure.

The ACL is an access control list that contains user name(s) with flagsto indicate authorized actions. Thus, an ACL indicates that user X (the“subject”) is authorized to do action(s) Y to the resource (object) inquestion (where user X here may be a single user or a group of users).The authorization can be subject to one or more constraints that can beexpressed in the associated POP. A typical example is a time-of-dayconstraint whereby an authorization expressed in the ACL is effectiveonly at certain times indicated in the POP. Authorizations can bedefined explicitly and implicitly in the hierarchical data structure. Inparticular, any node not having an (explicit) ACL implicitly inheritsthe ACL associated with its closest parent, whereby an ACL is definedimplicitly for the resource(s) associated with that node.

The parameter “rule” is used to define a dynamic access requirement fora node. In particular, this parameter can be used to define a Booleanrule expressing a condition to be satisfied by a set of one or morespecified attributes associated with a user request for the request tobe granted on a dynamic basis. This is the case even though noauthorization determinative for the request is associated with the nodein question (i.e., when evaluation of the ACL (plus POP) alone is notsufficient to produce a grant/refuse decision).

Through appropriate use of the ACL, POP and rule parameters described,the system administrator can construct a policy data structure definingboth predetermined, static authorizations (which do not requireevaluation of dynamic attributes) for system users, as well as rulesexpressing dynamic access requirements which allow evaluation of userrequests based on dynamic attributes associated with those requests.This static policy data structure is stored in policy database 8 and canbe updated from time to time by the system administrator. In the presentsystem, however, authorization server 7 can also insert dynamicauthorizations in the policy data structure. Before the creation andmanagement of these dynamic authorizations are described, however, thebasic access control operation of system 1 is now described.

A user 4 wishing to access a resource 3 submits a request to the PEP 2of the system. The PEP reformulates the request as necessary in terms ofthe appropriate subject, resource and action elements defined in thesystem, and then forwards the user request to request handler 6. Requesthandler 6 relays the user request to authorization server 7.

FIG. 2 indicates basic steps of the decision-making process performed byauthorization server 7 in response to the user request, according to anembodiment of the invention. Receipt of the request is represented bystep 20 in the figure. Controller 9 stores the request in local memory10 and then accesses the policy data structure in database 8 todetermine whether the policy contains an ACL (and any associated POP)that defines an authorization that is determinative for the request. Ifsuch a determinative ACL (“decisive ACL” in the figure) is found, asindicated by a “Yes” (Y) at decision step 21, then in step 22 controller9 applies the ACL (with any applicable POP conditions associated withthe ACL) to decide whether to grant or refuse the request. In step 23,controller 9 then returns the resulting decision to PEP 2 via requesthandler 6, and the decision process terminates. PEP 2 permits or deniesuser access to the requested resource 3 in accordance with the decision.

Returning to step 21, if the policy contains no authorization that isdeterminative for the user request (i.e., the ACL (plus POP) of theaccess control node is not decisive), operation proceeds to step 24. Thecontroller 9 checks for a determinative dynamic access requirement (DAR)in the policy structure. In particular, the controller checks whetherthe “rule” parameter of the node can be applied to obtain a decisionbased on dynamic attributes. In general, if no dynamic accessrequirement is found (“No” (N) at step 24), the decision can be made instep 25 to refuse the request and this decision will be returned to thePEP 2 at step 23. Assuming, however, that an appropriate dynamic accessrule is identified at step 24, then in step 26 controller 9 decides ifany attributes need to be obtained for evaluation of the rule, i.e. ifall necessary attributes have not been supplied with the request. Ingeneral, however, if no further attributes are needed (N at decision26), then operation can proceed to step 27.

Assuming, however, that the rule does involve attributes not suppliedwith the user request (Y at step 26), operation proceeds to step 28. Thecontroller 9 informs request handler 6 which attributes are outstanding.Request handler 6 contacts the appropriate attribute sources to obtainthe attributes in question and returns these to authorization server 7.Attributes may be obtained here from a variety of sources, including theuser, certification entities, credential issuers, identity providers orother trusted information verifiers, system components, time servers,and so on. Having obtained all necessary attributes at step 28 andstored the attributes in memory 10 for the user request, in step 27controller 9 decides whether to grant the request by determining whetherthe attribute(s) satisfy the access condition expressed in the rule. Theresulting decision is then returned to the PEP in step 23 and thedecision operation is complete.

In addition to the basic decision process just described, controller 9is operable to generate dynamic authorizations in certain circumstancesand to manage the addition and removal of these dynamic authorizationsin the policy data structure defining the static authorization ACLs. Inthis simple example, controller 9 creates dynamic authorizations when itis decided to grant certain user requests following application of adynamic access rule (steps 27 and 23 of FIG. 2). The main steps of thisprocess according to one embodiment of the invention are indicated inthe flow chart of FIG. 3.

Upon deciding to grant a request following application of a dynamicaccess rule, as represented by step 30 in FIG. 3, operation proceeds tostep 31. The controller 9 determines an expiration time for theattribute set stored in memory 10 that was evaluated in application ofthe dynamic access rule. In particular, any temporal validity limitationindicated for these attributes (e.g., as indicated in a credentialattesting to an attribute or otherwise associated with the attribute insome way) is identified by the controller and an appropriate expirationtime for the attribute set is defined accordingly. For example, theearliest expiration time associated with an attribute in the set may betaken as the expiration time for that set. (If no attributes are subjectto a time limitation, then the expiration time can be effectively deemedinfinite.)

Next, in step 32 controller 9 compares the expiration time with athreshold time T_(TH). This threshold can be defined in controller 9 asexpiration of a preset time interval from the current time. Anappropriate time interval could be preset for all user requests or fordifferent categories of user requests, or could be calculated by thecontroller using a predetermined algorithm. Such an algorithm mightaccount, for example, for the expected frequency of receipt of the userrequest. In any case, if the expiration time does not exceed thethreshold T_(TH), (N at decision step 32), then no action is requiredand the process terminates. If however, the expiration time exceedsT_(TH) (Y at step 32), then operation proceeds to step 34. Thecontroller 9 creates a dynamic ACL defining authorization of the user toaccess the resource according to the user access request.

The extent of the user authorization (e.g., permitted action(s) and anyassociated constraints such as time-of-day limitations, etc.) asderivable from the rule condition can be expressed in the dynamic ACLand an associated POP. The ACL is marked as a dynamic ACL by setting“temporary authorization” (TA) flag designated for this purpose in theACL data. (ACLs typically have multiple such flags which can be assignedto various purposes, and the temporary flag here can simply be an unusedflag in this basic flag-set.) In step 35, controller 9 inserts thedynamic ACL in the policy data structure in database 8 by attaching theACL to the appropriate access control node in the structure. Anyapplicable authorization constraints are defined in an associated POP asmentioned above. In addition, the expiration time identified in step 31is also entered in the policy data structure as a time constraint,indicating the expiration time T_(E) of the dynamic ACL, by recordingthe time T_(E) as metadata in a suitable metastructure of the policy.

The addition of a dynamic ACL in step 35 can be achieved by employingvarious techniques. For example, a dynamic ACL might be added as anadditional ACL for an access control node, i.e. in addition to the usualstatic ACL for the node. In this case the policy analysis logic could beadapted to give precedence to a dynamic ACL over a static ACL if bothapply to a user request (up to the expiration time T_(E)).Alternatively, a static ACL could effectively be replaced by a dynamicACL that defines both the new, dynamic authorization and theauthorizations expressed in the old, static ACL. In this case, metadatathat distinguishes the static authorization data from the dynamicauthorization data in some convenient manner will be recorded in thepolicy data structure for the purposes described later.

In a final step, step 36, of the dynamic authorization procedure, thecontroller 9 enters an identifier for the dynamic ACL, together with theexpiration time T_(E) for the ACL, in an expiration list maintained aspart of the policy data in database 8. This identifier allows thecontroller to locate the dynamic ACL conveniently when requiredsubsequently as discussed below. This step completes the dynamicauthorization process.

The effect of the FIG. 3 process is that dynamic ACLs expressing dynamicauthorizations will be added to the static policy data in database 8whenever a user access request is granted by dynamic rule evaluation andthe attribute set used to evaluate that rule is deemed sufficientlylong-lived—i.e., the rule effect is deemed valid for a time>T_(TH). Ifthe same request is received again within the expiration time of thedynamic ACL, this ACL will be identified as determinative for thatrequest in step 21 of the FIG. 2 process. In particular, the processperformed by controller 9 in step 21 of FIG. 2 in one embodiment of theinvention is illustrated in more detail in FIG. 4.

The process of checking the policy for a determinative ACL is initiatedat step 40 in FIG. 4. In step 41, controller 9 determines if the policystructure contains an ACL matching the subject, action, resource tuplein the request and determinative of the access decision for thatrequest. No distinction is made between static and dynamic ACLs in thisstep. Typically systems are constructed such that a matching ACL (thoughnot necessarily determinative) will be available for all requests. If nodeterminative ACL is found at step 41, then controller 9 determines atstep 42 that there is no applicable ACL and the FIG. 4 policy analysisterminates (i.e., operation then proceeding to step 24 in FIG. 2).

Assuming, however, a determinative ACL for the request is found (Y atdecision step 41), then in decision step 42 controller 9 checks whetherthe temporary authorization flag is set for the ACL. If not—i.e. if theACL is a static ACL—then controller 9 proceeds to step 44 where the ACLis deemed applicable for the request and the FIG. 4 process terminates.However, if the temporary flag is set for the ACL (Y at decision step43), then the ACL is a dynamic ACL. In implementations where a dynamicACL includes both dynamic authorizations and static authorizations asdescribed above, then in step 45 the controller checks the associatedmetadata to determine if the relevant authorization for the currentrequest is a dynamic authorization. If not, then operation proceeds tostep 44. If so, however, in step 46 the controller then checks thecurrent time t against the expiration time T_(E) of the dynamic ACL inthe associated metadata. If t<T_(E), the dynamic ACL is still validwhereby operation proceeds to step 44 and the ACL is deemed applicable.If t is equal to or greater than T_(E) in decision 46, then controller 9determines at step 42 that there is no applicable ACL. The search for adeterminative ACL is then complete.

The effect of FIG. 4 is that dynamic authorizations in dynamic ACLs areidentified as determinative for any matching requests received withintheir expiration time. The original dynamic access rule evaluation istherefore disabled for relevant requests during the lifetime of adynamic ACL. In this way, the inefficient process of dynamic ruleevaluation is bypassed in favor of a more highly efficient ACLevaluation process. Note that a dynamic authorization may apply not onlyto exactly the same request as that prompting its creation, but also toany other request with a subject, action, and resource tuple within theauthorization definition derived from the rule condition and expressedin the dynamic ACL. Thus, dynamic authorizations can be applicable towhole classes of requests where the rule evaluation indicates this to beappropriate. Only the first of these access requests will incur the costof running the rules evaluation engine in controller 9. All subsequentrequests within the validity time T_(E) of the dynamic ACL incur onlythe much lower cost of a normal ACL evaluation. Moreover, since dynamicACLs are integrated in the static authorization structure in thispreferred embodiment, the policy evaluation path is especiallyefficient.

The improvement in performance through use of the dynamic authorizationsystem described can be understood by considering the relativeefficiency of evaluating ACLs and dynamic access rules. In a current webserver based system, handling an HTTP request from a user using therules engine for request evaluation is considered twice as expensive asa normal ACL-evaluated request. Throughput, in terms of web pagesdelivered per second, is roughly halved for trivial rules-engine ruleswithout the need to retrieve dynamic attributes. For more complex rulesthe impact is even greater, and for rules requiring RTTs to retrieveattributes even more so. Note that throughput is the most importantefficiency criterion in some types of systems.

Moreover, the cost and throughput implications consider the handling ofan entire web transaction, from interception and parsing of an HTTPrequest, through making the access control decision to forwarding theHTTP message to the respective HTTP server. Of this entire process, theuse of the rules engine accounts for only for a small percentage.Accounting for this fact, the actual cost of involving the rules enginein a request evaluation can be estimated as approximately six times theprocessing time for an ACL-based access control decision for even thesimplest requests. For complex requests, or where RTTs are involved forattribute retrieval, the comparison is even worse. This demonstratesthat the use of dynamic authorizations is an extremely powerfulmechanism for improving performance in access control systems.

The system described not only permits dynamic ACLs to be computed andintegrated into the static authorization data structure, but alsoprovides an efficient and secure mechanism for removing the dynamicauthorizations. In particular, the expiration list maintained in policydatabase 8 can be used to identify dynamic ACLs whose expiration timeT_(E) has been reached. This list can be ordered by expiration time sothat that the next-to-expire dynamic ACL comes first. However, the useof temporary authorization flags and checking of expiration times in theprocess described above ensures that dynamic authorizations that haveexpired cannot be applied to requests.

Hence, the process of removing expired authorizations from the policystructure can be conducted when most convenient. For example, a “lazyevaluation” process could be employed whereby dynamic authorizations areremoved “on-the-fly” by controller 9 when an expired ACL is identifiedin step 46 of FIG. 4. Alternatively, for example, a “garbage collection”process could be performed whereby controller 9 removes expired dynamicACLs in times of low load. Note that, in embodiments where dynamic ACLsinclude both static and dynamic authorizations as described earlier,then the original static ACL, containing the static authorizations, canbe restored to the policy when the dynamic ACL is removed based on themetadata discussed above. Overall, the overhead for the creation andsubsequent clean up of a dynamic ACL will be amortized if the dynamicauthorization is used even once within its validity time. For long-termattributes, such as those with a lifetime of more than a day, the effectof the improvement in efficiency will be profound.

Changes and modifications can be made to the system that has beendescribed. As one example, while dynamic authorizations can be generatedin the above system in response to granting an access request via ruleevaluation, developments can be readily envisaged. Dynamicauthorizations may, for instance, be generated if an access request isrefused, such as if the rule evaluation process indicates that accessmight be given in certain circumstances. Such circumstances could beencoded in constraints expressed in a POP. A particular example here iswhere a request is refused due to a time-of-day condition expressed in arule, whereby access would be granted if the same request were receivedat an acceptable time.

Dynamic authorizations might also indicate that a user is not authorizedin accordance with the rule evaluation. Circumstances can be envisagedwhere controller 9 can add a dynamic authorization by modifying anexisting dynamic ACL. Also, while dynamic ACLs are integrated in thestatic policy structure in the above embodiment, alternatives can beenvisaged in which dynamic authorizations are defined independently inthe policy data structure. Note also that, while caching of attributesis not required for operation of the dynamic authorization systemdescribed, the attribute sets could be retained in memory 10 as a cachememory if desired. Such cached attributes might provide usefulinformation for later operations of the controller, such as formodifying existing dynamic ACLs.

Embodiments of the invention may be based on access control systemsother than those described herein, and mechanisms other than ACLs mightbe employed to define authorizations in such systems. Also, systemcomponents indicated as single entities in FIG. 1 may be implemented bymore than one entity where appropriate. Similarly, functionality ofdifferent components in FIG. 1 may be combined in some embodiments. Ingeneral, a data processing system embodying the invention might be anysystem of one or more devices, which may be interconnected via (one ormore) data communications networks, in which resources are available foraccess by requesting users.

It is therefore noted that, as can be appreciated by one those ofordinary skill within the art, aspects of the present invention may beembodied as a system, method or computer program product. Accordingly,aspects of the embodiments of the invention may take the form of anentirely hardware embodiment, an entirely software embodiment (includingfirmware, resident software, micro-code, etc.) or an embodimentcombining software and hardware aspects that may all generally bereferred to herein as a “circuit,” “module” or “system.” Furthermore,aspects of the present invention may take the form of a computer programproduct embodied in one or more computer readable medium(s) havingcomputer readable program code embodied thereon.

Any combination of one or more computer readable medium(s) may beutilized. The computer readable medium may be a computer readable signalmedium or a computer readable storage medium. A computer readablestorage medium may be, for example, but not limited to, an electronic,magnetic, optical, electromagnetic, infrared, or semiconductor system,apparatus, or device, or any suitable combination of the foregoing. Morespecific examples (a non-exhaustive list) of the computer readablestorage medium include the following: an electrical connection havingone or more wires, a portable computer diskette, a hard disk, a randomaccess memory (RAM), a read-only memory (ROM), an erasable programmableread-only memory (EPROM or Flash memory), an optical fiber, a portablecompact disc read-only memory (CD-ROM), an optical storage device, amagnetic storage device, or any suitable combination of the foregoing.In the context of this document, a computer readable storage medium maybe any tangible medium that can contain, or store a program for use byor in connection with an instruction execution system, apparatus, ordevice.

A computer readable signal medium may include a propagated data signalwith computer readable program code embodied therein, for example, inbaseband or as part of a carrier wave. Such a propagated signal may takeany of a variety of forms, including, but not limited to,electro-magnetic, optical, or any suitable combination thereof. Acomputer readable signal medium may be any computer readable medium thatis not a computer readable storage medium and that can communicate,propagate, or transport a program for use by or in connection with aninstruction execution system, apparatus, or device. Program codeembodied on a computer readable medium may be transmitted using anyappropriate medium, including but not limited to wireless, wired,optical fiber cable, RF, and so on, or any suitable combination of theforegoing.

In general, a computer program product includes a computer-readablemedium on which one or more computer programs are stored. Execution ofthe computer programs from the computer-readable medium by one or moreprocessors of one or more hardware devices causes a method to beperformed. For instance, the method that is to be performed may be oneor more of the methods that have been described above.

The computer programs themselves include computer program code. Computerprogram code for carrying out operations for aspects of the presentinvention may be written in any combination of one or more programminglanguages, including an object oriented programming language such asJava, Smalltalk, C++ or the like and conventional procedural programminglanguages, such as the “C” programming language or similar programminglanguages. The program code may execute entirely on the user's computer,partly on the user's computer, as a stand-alone software package, partlyon the user's computer and partly on a remote computer or entirely onthe remote computer or server. In the latter scenario, the remotecomputer may be connected to the user's computer through any type ofnetwork, including a local area network (LAN) or a wide area network(WAN), or the connection may be made to an external computer (forexample, through the Internet using an Internet Service Provider).

Aspects of the present invention have been described above withreference to flowchart illustrations and/or block diagrams of methods,apparatus (systems) and computer program products according toembodiments of the invention. It will be understood that each block ofthe flowchart illustrations and/or block diagrams, and combinations ofblocks in the flowchart illustrations and/or block diagrams, can beimplemented by computer program instructions. These computer programinstructions may be provided to a processor of a general purposecomputer, special purpose computer, or other programmable dataprocessing apparatus to produce a machine, such that the instructions,which execute via the processor of the computer or other programmabledata processing apparatus, create means for implementing thefunctions/acts specified in the flowchart and/or block diagram block orblocks.

These computer program instructions may also be stored in a computerreadable medium that can direct a computer, other programmable dataprocessing apparatus, or other devices to function in a particularmanner, such that the instructions stored in the computer readablemedium produce an article of manufacture including instructions whichimplement the function/act specified in the flowchart and/or blockdiagram block or blocks.

The computer program instructions may also be loaded onto a computer,other programmable data processing apparatus, or other devices to causea series of operational steps to be performed on the computer, otherprogrammable apparatus or other devices to produce a computerimplemented process such that the instructions which execute on thecomputer or other programmable apparatus provide processes forimplementing the functions/acts specified in the flowchart and/or blockdiagram block or blocks.

The flowchart and block diagrams in the figures illustrate thearchitecture, functionality, and operation of possible implementationsof systems, methods and computer program products according to variousembodiments of the present invention. In this regard, each block in theflowchart or block diagrams may represent a module, segment, or portionof code, which comprises one or more executable instructions forimplementing the specified logical function(s). It should also be notedthat, in some alternative implementations, the functions noted in theblock may occur out of the order noted in the figures. For example, twoblocks shown in succession may, in fact, be executed substantiallyconcurrently, or the blocks may sometimes be executed in the reverseorder, depending upon the functionality involved. It will also be notedthat each block of the block diagrams and/or flowchart illustration, andcombinations of blocks in the block diagrams and/or flowchartillustration, can be implemented by special purpose hardware-basedsystems that perform the specified functions or acts, or combinations ofspecial purpose hardware and computer instructions.

It is finally noted that, although specific embodiments have beenillustrated and described herein, it will be appreciated by those ofordinary skill in the art that any arrangement calculated to achieve thesame purpose may be substituted for the specific embodiments shown. Thisapplication is thus intended to cover any adaptations or variations ofembodiments of the present invention. As such and therefore, it ismanifestly intended that this invention be limited only by the claimsand equivalents thereof.

What is claimed is:
 1. A method comprising: determining, by a processor,whether a policy data structure defines a predetermined authorizationfor a resource access request that has been received; in response todetermining that the policy data structure defines the predeterminedauthorization for the request, applying the predetermine authorizationto the request, by the processor, to determine whether to grant therequest; and in response to determining that the policy data structuredoes not define the predetermine authorization for the request, applyinga dynamic authorization request condition specified by the policy datastructure to the request, by the processor, to determine whether tostill grant the request despite the policy data structure not definingthe predetermined authorization for the request.
 2. The method of claim1, wherein the predetermined authorization relates to authorization ofat least one user to access at least one resource.
 3. The method ofclaim 1, wherein the predetermined authorization relates to a pluralityof dynamic access requests that each indicate a dynamic authorizationrequest condition to be satisfied by a respective set of attributesassociated with a user request to access a resource and for the requestto be granted in absence of an authorization determination of therequest.
 4. The method of claim 3, further comprising: identifying anytemporal validity limitation for the set of attributes associated withthe resource access request to which the dynamic authorization requestcondition is applied; and, determining whether to add a dynamicauthorization to the policy data structure in accordance with thetemporal validity limitation.
 5. The method of claim 1, furthercomprising, after applying the dynamic authorization request condition,adding a dynamic authorization relating to authorization to access aresource specified by the resource access request, by the processor, tothe policy data structure where the resource access request has beengranted.
 6. The method of claim 5, further comprising, where the dynamicauthorization has been added to the policy data structure: defining anexpiration time for the dynamic authorization within the policy datastructure in accordance with a temporal validity limitation indicatedfor the respective set of attributes associated with the request; and,only applying the dynamic authorization to a subsequent request up tothe expiration time.
 7. The method of claim 6, further comprising: uponadding the dynamic authorization to the policy data structure, setting atemporary authorization flag associated with the dynamic authorizationin the policy data structure; and, before applying an authorization to afurther request, determining whether the temporary authorization flag isset for the authorization; in response to determining that the temporaryauthorization flag is set for the authorization, checking the expirationtime for the authorization.
 8. The method of claim 6, furthercomprising: removing the dynamic authorization from the policy datastructure upon the expiration time having been reached.
 9. The method ofclaim 6, further comprising: removing the dynamic authorization from thepolicy data structure upon the expiration time having been reached. 10.The method of claim 5, wherein the policy data structure comprises astatic authorization data structure defining the predeterminedauthorization, and wherein the dynamic authorization added to the policydata structure is integrated within the static authorization datastructure.
 11. The method of claim 10, further comprising: maintainingin the policy data structure a list identifying the dynamicauthorization in the policy data structure and indicating an expirationtime associated with the dynamic authorization.
 12. A storage devicestoring computer program code executable by a processor, the computerprogram code comprising: a first computer program part to determinewhether a policy data structure defines a predetermined authorizationfor a resource access request that has been received; a second computerprogram part to, in response to determining that the policy datastructure defines the predetermined authorization for the request, applythe predetermine authorization to the request, by the processor, todetermine whether to grant the request; and a third computer programpart to, in response to determining that the policy data structure doesnot define the predetermine authorization for the request, apply adynamic authorization request condition specified by the policy datastructure to the request, by the processor, to determine whether tostill grant the request despite the policy data structure not definingthe predetermined authorization for the request.
 13. The storage deviceof claim of claim 12, wherein the predetermined authorization relates toauthorization of at least one user to access at least one resource. 14.The storage device of claim of claim 12, wherein the predeterminedauthorization relates to a plurality of dynamic access requests thateach indicate a dynamic authorization request condition to be satisfiedby a respective set of attributes associated with a user request toaccess a resource and for the request to be granted in absence of anauthorization determination of the request.
 15. The storage device ofclaim of claim 12, wherein the computer program code further comprises:a fourth computer program part to identify any temporal validitylimitation for the set of attributes associated with the resource accessrequest to which the dynamic authorization request condition is applied;and, a fifth computer program part to determine whether to add a dynamicauthorization to the policy data structure in accordance with thetemporal validity limitation.
 16. A system comprising: a plurality ofresources; an apparatus to control access to the resources, theapparatus comprising: a memory to store a policy data structure; and,control logic to: determine whether the policy data structure defines apredetermined authorization for a resource access request that has beenreceived; in response to determining that the policy data structuredefines the predetermined authorization for the request, apply thepredetermine authorization to the request, by the processor, todetermine whether to grant the request; and in response to determiningthat the policy data structure does not define the predetermineauthorization for the request, apply a dynamic authorization requestcondition specified by the policy data structure to the request, by theprocessor, to determine whether to still grant the request despite thepolicy data structure not defining the predetermined authorization forthe request.
 17. The system of claim 16, wherein the predeterminedauthorization relates to authorization of at least one user to access atleast one resource.
 18. The system of claim 16, wherein thepredetermined authorization relates to a plurality of dynamic accessrequests that each indicate a dynamic authorization request condition tobe satisfied by a respective set of attributes associated with a userrequest to access a resource and for the request to be granted inabsence of an authorization determination of the request.
 19. The systemof claim 16, wherein the control logic is further to: identify anytemporal validity limitation for the set of attributes associated withthe resource access request to which the dynamic authorization requestcondition is applied; and, determine whether to add a dynamicauthorization to the policy data structure in accordance with thetemporal validity limitation.